package com.cloud.job.service;

import java.util.List;
import java.util.Map;

/**
 * @packageName: com.cloud.job.service
 * @name: QuartzJobService
 * @description:
 * @author: 董定卓
 * @dateTime: 2019/7/16 16:47
 */
public interface QuartzJobService {

    /**
     * 添加任务可以传参数
     *
     * @param clazz
     * @param jobName
     * @param groupName
     * @param cronExp
     * @param param
     */
    void addJob(Class clazz, String jobName, String groupName, String cronExp, Map<String, Object> param);

    /**
     * 暂停任务
     *
     * @param name
     * @param groupName
     */
    void pauseJob(String name, String groupName);

    /**
     * 恢复任务
     *
     * @param name
     * @param groupName
     */
    void resumeJob(String name, String groupName);

    /**
     * 更新任务
     *
     * @param name
     * @param groupName
     * @param cronExp
     * @param param
     */
    void updateJob(String name, String groupName, String cronExp, Map<String, Object> param);

    /**
     * 删除任务
     *
     * @param name
     * @param groupName
     */
    void deleteJob(String name, String groupName);

    /**
     * 启动所有任务
     */
    void startAllJobs();

    /**
     * 关闭所有任务
     */
    void shutdownAllJobs();

    /**
     * 任务分页
     *
     * @param map
     * @param pageSize
     * @param pageNo
     * @return
     */
    List<Map<String, Object>> list(Map<String, Object> map, int pageSize, int pageNo);

    /**
     * 任务分页统计
     *
     * @param map
     * @return
     */
    long count(Map<String, Object> map);
}
